package com.doitedu.hbase.client2;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.BufferedMutator;
import org.apache.hadoop.hbase.client.Connection;
import org.apache.hadoop.hbase.client.ConnectionFactory;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.util.Bytes;

import java.io.IOException;

/**
 * @Date 2021/12/15
 * @Created by HANGGE
 * @Description
 * 原来的put操作 请求Hbase服务的次数过多 , 给服务器带来压力
 * 1 BufferedMutator 数据一定的时间  一定的大小写一次
 * 2 Bytes .toXXX  将各种数据类型转换成字节数组   将字节数组转换成各种数据类型
 * 3 Put  是 Mutation的子类 mutate
 *
 */
public class C01_Mutation {
    public static void main(String[] args) throws Exception {
        Configuration conf = HBaseConfiguration.create();
        conf.set("hbase.zookeeper.quorum" , "linux01:2181,linux02:2181,linux03:2181");
        Connection conn = ConnectionFactory.createConnection(conf);
           // 获取执行批量导入的对象
        BufferedMutator bufferedMutator = conn.getBufferedMutator(TableName.valueOf("tb_teacher"));
        //10
        Put put = new Put(Bytes.toBytes("rk003"));
        put.addColumn(Bytes.toBytes("info") , Bytes.toBytes("name") , Bytes.toBytes("lny")) ;
        put.addColumn(Bytes.toBytes("info") , Bytes.toBytes("age") , Bytes.toBytes(42)) ;
        put.addColumn(Bytes.toBytes("info") , Bytes.toBytes("gender") , Bytes.toBytes("JJ")) ;
             // 插入数据
        bufferedMutator.mutate(put);
        // 设置刷写的时间间隔
        bufferedMutator.setWriteBufferPeriodicFlush(1000*60*10);
        // 将缓存的数据刷写
        /**
         * 将客户端的用户数据从本地内存中  发送到服务端
         */
        bufferedMutator.flush();
        conn.close();
    }
}
